package com.tt.dp.singleton;

public class Singleton {

//    private static Singleton singleton;
//
//    private Singleton(){
//
//    }
//
//    /**
//     * 同步方法，解决多线程安全问题
//     *
//     * 缺点:效率降低，性能下降。重量级锁
//     *
//     * 需求:只需要在第一次创建的时候加锁
//     * @return
//     */
//    public static synchronized Singleton getInstance(){
//
//        if(singleton == null){
//
//            singleton = new Singleton();
//
//        }
//
//        return singleton;
//    }

//    private volatile static Singleton singleton;
//
//    private Singleton(){
//
//    }
//
//    /**
//     * double check locking (双重检查加锁)
//     *
//     * volatile关键字保证singleton变量线程之间的可见性
//     * @return
//     */
//    public static Singleton getInstance(){
//
//        if(singleton == null){
//
//            synchronized (Singleton.class){
//                if(singleton == null){
//                    singleton = new Singleton();
//                }
//            }
//        }
//
//        return singleton;
//    }

//    private static Singleton singleton = new Singleton();
//
//    private Singleton(){
//
//    }
//
//    /**
//     * 饿汉式
//     * 优点: 线程安全
//     * 缺点: 浪费内存空间，类初始化的时候就已经创建好实例
//     * @return
//     */
//    public static Singleton getInstance(){
//        return singleton;
//    }
}
